﻿var $btn = $('#ctlBtn');   // 批量上传按钮 （ 暂没有用）
var $fileUploadList = $("#fileUploadList"); // 文件上传总列表
var $htmlUploadListBody = $('#htmlUploadListBody'); // 上传列表
var $countUpFileNum = $("#countUpFileNum"); //上传的总文件数
var countUpFile = []; // 一共上传中的文件 id 文件id name 文件名 size 文件大小 fpath 父级目录 state 文件状态 type 文件类型 
var $successUpFileNum = $("#successUpFileNum"); // 上传完成了文件数
var $fileUploadInfo = $("#fileUploadInfo"); //上传信息提示
var chunkSize =1024 * 1024 *20;    //以后端的约定  分片的大小
/*
angularObj = {
    obj:  //angularjs 文件对象
    apply: // 刷新angularjs对象
    list:   // 需要绑定到那个list 中
    userobj: // 用户对象
    fobj:// 父级对象 顶级为null      
}
angularparams = {
    orgid： // 企业id  暂无
    orgname: //企业名称 暂无
    userd:  // 用户id     暂无
    username: // 用户名称  暂无
    upid:   // 文件id 可空
    status: // 文件状态 0成功 1转码失败 2上传中 3上传失败
    fid: // 文件父级id
    fpath: // 文件父级地址    
    filename: // 文件名称
    filetype: //文件类型
    size: // 文件大小    
    msg:  // 必须传提示对象
    orgid:sysUserInfo.getuserinfo().organization_ID,    // 企业id
    orgname:sysUserInfo.getuserinfo().organization_Name,    // 企业名称
    userd:sysUserInfo.getuserinfo().user_ID,  // 用户id
    username:sysUserInfo.getuserinfo().user_Name, //  用户名称
}
*/
var angularObj = {};  // angularjs 回调对象
var angularparams = {}; // 请求参数对象

// HOOK 这个必须要再uploader实例化前面
WebUploader.Uploader.register({
    'before-send-file': 'beforeSendFile',
    'before-send': 'beforeSend'
}, {
    //add-file(files): File对象或者File数组	用来向队列中添加文件。
    //before-send-file	(file) file : 对象    在文件发送之前request，此时还没有分片（如果配置了分片的话），可以用来做文件整体md5验证。
    //before-send(block)	block: 分片对象	   在分片发送之前request，可以用来做分片验证，如果此分片已经上传成功了，可返回一个rejected promise来跳过此分片上传
    //after-send-file(file): File对象	在所有分片都上传完毕后，且没有错误后request，用来做分片验证，此时如果promise被reject，当前文件上传会触发错误。        
    beforeSendFile: function (file) {
        console.log("beforeSendFile");
        // Deferred对象在钩子回掉函数中经常要用到，用来处理需要等待的异步操作。
        var task = new $.Deferred();
        // 根据文件内容来查询MD5        
        uploader.md5File(file).progress(function (percentage) {   // 及时显示进度
            console.log('计算md5进度:', percentage);
            getProgressBar(file, percentage, "分片");
        }).then(function (val) { // 完成
            delFileHtml(file);
            // 初始化参数
            angularparams.filename = file.name;  //文件名称
            angularparams.size = (file.size / 1024); // 文件大小
            angularparams.filetype = file.ext;   //文件类型 

            angularparams.md5 = val;  // 文件MD5标识      
            //样式隐藏删除按钮
            getAjax(commonUrl + "/Kapi/upfiles", angularparams, function (response) {
                console.log("文件对象获取：" + response);         // 30 更新子版本
                if (response.errorcode == "39") {    // 文件空间超出最大限制
                    angularObj.msg.warning("警告", "存储空间超过最大限制");
                    task.reject();
                }
                // 不存在
                var responseIsExist = true;
                // 上传半后又重新上传
                if (response.errorcode == "0" || response.errorcode == "30") {
                    if (angularparams.optype == 1) {
                        //文件唯一id赋值
                        file.upId = response.data.upId;
                    } else if (angularparams.optype == 2) {
                        //更新文件
                        file.upId = response.data.id;
                    }
                    // 判断文件是否存在
                    countUpFile.forEach(function (item, index) {
                        if (item.upId == response.data.upId) {
                            responseIsExist = false;
                        }
                    });

                }
                if (responseIsExist) {
                    var obj = response.data;
                    obj.md5 = val;
                    if (response.errorcode == "0") { // 获取对象成功                                                                                
                        if (angularparams.optype == 1) { //文件上传
                            angularObj.list.push(response.data); // 添加到页面上   
                            //处理参数
                            obj.id = file.id; //文件队列中id                       
                            obj.status = 4; //文件上传状态
                            obj.optype = 1; //文件上传
                            addFileHtml(obj); //生成html                                               
                        } else if (angularparams.optype == 2) {  // 文件更新       
                            angularObj.list.unshift(response.data); // 添加到页面上                  
                            //处理参数
                            obj.upId = obj.id;  //文件id
                            obj.id = file.id // 文件队列中id                        
                            obj.fileType = obj.Extended;  //文件类型
                            obj.fileName = obj.Name;  // 文件名称
                            obj.fileSize = obj.Size; // 文件大小
                            obj.filepath = angularparams.fpath; //文件地址
                            obj.status = 4; // 文件上传状态
                            obj.optype = 2; //更新文件
                            addFileHtml(obj); //生成html 
                        }
                        try {
                            angularObj.apply(); // 刷新这里会报错。 不影响 需要解决            
                        } catch (e) {

                        }

                        // 添加文件
                        addFile(obj, true);
                        // 日志
                        console.log("fileQueued", file, uploader);
                        if (angularObj.callbackFun) {   // 执行回调方法
                            angularObj.callbackFun();
                        }
                    } else if (response.errorcode == "30") { // 暂时复杂  更新子版本         

                        file.upId = obj.id; // 赋值文件id
                        //处理参数
                        obj.upId = obj.id;  //文件id
                        obj.id = file.id // 文件队列中id                        
                        obj.fileType = obj.Extended;  //文件类型
                        obj.fileName = obj.Name;  // 文件名称
                        obj.fileSize = obj.Size; // 文件大小
                        obj.filepath = angularparams.fpath; //文件地址
                        obj.status = 4; // 文件上传状态
                        obj.optype = 2; //更新文件
                        addFileHtml(obj); //生成html    
                        // 添加文件
                        addFile(obj, true);

                    }
                }
                console.log('md5 result:', val);
                file.md5 = val;
                // 模拟用户id
                // file.uid = new Date().getTime() + "_" + Math.random() * 100;
                file.uid = WebUploader.Base.guid();
                // 进行md5判断
                getAjax(commonFileUrl + "/Md5File/checkFileMd5", { userid: angularObj.userobj.user_ID, md5: file.md5 }, function (data) {
                    // 返回的状态码
                    status = data.errorcode;
                    console.log(data.errormsg);
                    task.resolve();
                    if (status == 101) {
                        // 文件不存在，那就正常流程                   
                    } else if (status == 100) {
                        // 忽略上传过程，直接标识上传成功；文件已经上传
                        uploader.skipFile(file);
                        file.pass = true;
                    } else if (status == 102) {
                        // 部分已经上传到服务器了，但是差几个模块。                    
                        console.log(data.datas);
                        file.missChunks = data.datas;
                    }
                }, function () {  //上传失败
                    task.reject();
                    $('#' + file.upId + ' .jindu').html('<div onclick="fileRetry()"><i class="iconfont" style="color: red" >&#xe6b9;</i> 上传中断</div> ');
                });

            }, function (e) { // 发生异常暂停上传
                console.log("文件异常"+e);
                angularObj.msg.error(file.name + "文件异常");
                // 参数二不传则为暂停上传
                uploader.removeFile(file, true);
            });
        });
        return $.when(task);
    },
    beforeSend: function (block) {
        console.log("block")
        var task = new $.Deferred();
        var file = block.file;
        var missChunks = file.missChunks;
        var blockChunk = block.chunk;
        console.log("当前分块：" + blockChunk);
        console.log("missChunks:" + missChunks);
        if (missChunks !== null && missChunks !== undefined && missChunks !== '') {
            var flag = true; //验证分片是否完成上传了。
            for (var i = 0; i < missChunks.length; i++) {
                if (blockChunk == missChunks[i]) {
                    console.log(file.name + ":" + blockChunk + ":还没上传，现在上传去吧。");
                    flag = false;
                    break;
                }
            }
            if (flag) {
                task.reject();
            } else {
                task.resolve();
            }
        } else {
            task.resolve();
        }
        // 返回回调方法
        return $.when(task);
    }
});
/**
    初始化， 获取此人之前上传的内容
*/
function fileInit() {
    //本地获取当前登录人
    var fileUserId = JSON.parse(localStorage.getItem("userinfo")).user_ID;
    // 获取这个人之前上传的数据
    getAjax(commonFileUrl + "/Md5File/findRedissFile", { userid: fileUserId }, function (response) {
        if (response.errorcode == 0) {
            response.datas.forEach(function (item, ind) { // 路径需要处理
                //处理参数
                item.id =null; //队列id
                item.upId = item.upid;  //文件id
                item.fileType = item.filetype;  //文件类型
                item.fileName = item.filename;  // 文件名称
                item.fileSize = item.size; // 文件大小
                item.filepath = item.fpath;//文件地址
                addFileHtml(item); //生成html
            });
            countUpFile = response.datas;
            allProgress();
        }
    });

}
fileInit();
/** 全局选择上传文件 主入口
    @obj  angular对象必须传
    @app  $scope.$apply 外部刷新angularjs
*/
function allSelectFileObj(obj) {
    angularObj = obj;
    angularparams = {}; // 请求参数对象
    //参数初始化
    angularparams.orgid = angularObj.userobj.organization_ID;     // 企业id 
    angularparams.orgname = angularObj.userobj.organization_Name;     // 企业名称
    angularparams.userid = angularObj.userobj.user_ID;   // 用户id
    angularparams.username = angularObj.userobj.user_Name;  //  用户名称    
    angularparams.status = 2; // 正在上传
    angularparams.optype = angularObj.optype; // 上传类型     1 文件上传  2文件更新
    if (angularObj.optype == 1) {
        angularparams.upid = "";   // 文件id
        angularparams.fid = angularObj.fobj == null ? 0 : angularObj.fobj.upId; // 父级id
        angularparams.fpath = angularObj.fobj == null ? "/" : (angularObj.fobj.filepath && angularObj.fobj.filepath != "/" ? angularObj.fobj.filepath : "") + "/" + angularObj.fobj.fileName;  // 父级路径
    } else  if(angularObj.optype == 2){// 更新文件后台不用
        angularparams.fid = angularObj.fobj == null ? 0 : angularObj.fobj.upId; // 父级id
        angularparams.fpath = angularObj.fobj == null ? "-" : angularObj.fobj.fileName;  // 父级路径
        angularparams.upid = angularObj.fobj.upId;   // 文件id
    }
    // 限制文件上传的类型
    if (obj.accept) {
        uploader.option("accept", obj.accept);
    } else {
        //uploader.option("accept", null);
    }
//    // 实例化
//    uploader = WebUploader.create({
//        pick: {
//            id: '#uploadAll',
//            label: '点击选择文件'
//        },
//        formData: {
//            uid: 0,
//            md5: '',
//            chunkSize: chunkSize
//        },
//        //    accept: {
//        //        title: 'Images',
//        //        extensions: 'gif,jpg,jpeg,bmp,png',
//        //        mimeTypes: 'image/*'

//        //    },
//        //dnd: '#dndArea',  // 指定接受拖拽上传的容器
//        //paste: '#uploader',   //指定复制粘贴的容器
//        swf: '/framework/webuploader/js/Uploader.swf',
//        chunked: true, //分片上传
//        chunkSize: chunkSize, // 字节 1M分块
//        threads: 3, //当前为3个线程同时请求到达
//        chunkRetry: 5, // 自动重连5次
//        server: commonFileUrl + '/Md5File/fileUpload', //上传的路径
//        auto: true, // 是否自动上传
//        // duplicate : true, //去重， 根据文件名字、文件大小和最后修改时间来生成hash Key.    
//        disableGlobalDnd: true, // 禁掉全局的拖拽功能。这样不会出现图片拖进页面的时候，把图片打开。
//        fileNumLimit: 1024,     // 队列最大限制总数量
//        fileSizeLimit: 1024 * 1024 * 1024 * 1024,    // 200 M队列总大小
//        fileSingleSizeLimit: 1024 * 1024 * 1024 * 1024   // 50 M 单个文件大小限制   
//    });
    // 附加参数
    //angularObj.orgid = angularObj.userobj.organization_ID,    // 企业id 
    //angularObj.orgname = angularObj.userobj.organization_Name,    // 企业名称
    //angularObj.userid = angularObj.userobj.user_ID,  // 用户id
    //angularObj.username = angularObj.userobj.user_Name, //  用户名称
    document.getElementById("uploadAll").childNodes[1].childNodes[0].click();
}


// 实例化
var uploader = WebUploader.create({
    pick: {
        id: '#uploadAll',
        label: '点击选择文件'
    },
    formData: {
        uid: 0,
        md5: '',
        chunkSize: chunkSize
    },
//    accept: {
//        title: 'Images',
//        extensions: 'gif,jpg,jpeg,bmp,png',
//        mimeTypes: 'image/*'

//    },
    //dnd: '#dndArea',  // 指定接受拖拽上传的容器
    //paste: '#uploader',   //指定复制粘贴的容器
    swf: '/framework/webuploader/js/Uploader.swf',
    prepareNextFile:true, // 允许文件上传中文件准备好
    chunked: true, //分片上传
    chunkSize: chunkSize, // 字节 1M分块
    threads: 3, //当前为3个线程同时请求到达
    chunkRetry: 5, // 自动重连5次
    server: commonFileUrl + '/Md5File/fileUpload', //上传的路径
    auto: true, // 是否自动上传
    // duplicate : true, //去重， 根据文件名字、文件大小和最后修改时间来生成hash Key.    
    disableGlobalDnd: true, // 禁掉全局的拖拽功能。这样不会出现图片拖进页面的时候，把图片打开。
    fileNumLimit: 1024,     // 队列最大限制总数量
    fileSizeLimit: 1024 * 1024 * 1024 * 2048,    // 200 M队列总大小
    fileSingleSizeLimit: 1024 * 1024 * 1024 * 2048   // 50 M 单个文件大小限制   
});

// 测试上传按钮
uploader.addButton({
    id: '#testBtnFileUp',
    innerHTML: '测试上传的临时按钮'
});
// 当有文件被添加进队列的时候
uploader.on('fileQueued', function (file) {
    angularObj.msg.info("正在加入队列", file.name + ",分片处理中约需要10秒~1分钟左右");
    // 第一次发出请求要数据库 文件对象 如果是实时的需要添加钩子（*）              
    file.upId = file.id;
    file.fileType = file.ext;
    file.fileName = file.name;
    file.fileSize = (file.size / 1024);
    file.optype = angularparams.optype;
    file.filepath = angularparams.fpath;
    file.fileFlag = 1;
    file.status = 5;
    addFileHtml(file); //生成html  
    addFile(file)
});

//当文件被删除队列的时候触发
uploader.on('fileDequeued', function (file) {
    console.log(file);
   
});

//当某个文件的分块在发送前触发，主要用来询问是否要添加附带参数，大文件在开起分片上传的前提下此事件可能会触发多次。
uploader.onUploadBeforeSend = function (obj, data) {
    console.log("onUploadBeforeSend");
    var file = obj.file;
    console.log(obj);
    data.md5 = file.md5 || ''; //会出现空值需要看一下
    data.uid = file.uid;
    var dataBaseFileObj = getOneFileObj(file);
    if (dataBaseFileObj == null) {
        console.log("文件丢失");
        return;
    }
    data.orgid = angularObj.userobj.organization_ID;     // 企业id 
    data.orgname = angularObj.userobj.organization_Name;     // 企业名称
    data.userid = angularObj.userobj.user_ID;   // 用户id
    data.username = angularObj.userobj.user_Name;  //  用户名称    
    data.status = 2;
    data.optype = dataBaseFileObj.optype;    // 操作类型
    if (dataBaseFileObj.optype == 1) {
        data.ziid = dataBaseFileObj.fileid;
        data.upid = dataBaseFileObj.upId;        
    } else if (dataBaseFileObj.optype == 2) {
        data.ziid = dataBaseFileObj.upId;
        data.upid = dataBaseFileObj.fileid;
    }    
    data.fid = dataBaseFileObj.fid; // 父级id
    data.fpath = dataBaseFileObj.filepath;  // 父级路径        

};
// 上传中
uploader.on('uploadProgress', function (file, percentage) {
    getProgressBar(file, percentage,"上传");
});
// 上传成功返回结果
uploader.on('uploadSuccess', function (file) {
    var text = '已上传';
    if (file.pass) {
        text = "文件妙传功能，文件已上传。"
    }
    angularObj.msg.success("上传成功",file.name);
    angularObj.list.forEach(function (item, ind) {
        if (item.upId == file.upId) {
            item.status = 0; // 上传成功
            item.filecover = item.filecover + "?version=1";
        }
    });
    updataFile(file, 0);
    try {
        angularObj.apply();
    } catch (e) {
    }
    
    //$('#' + file.id).find('p.state').text(text);
    console.log('uploadSuccess chenggong', file);
    uploader.removeFile(file, true);
    $('#' + file.upId + ' .jindu').html('<i class="iconfont" style="color: green">&#xe772;</i>上传成功 ');
});
// 上传失败
uploader.on('uploadError', function (file, reason) {
    console.log('uploadError shibai', file, reason);
    if (reason == "abort") {
        $('#' + file.upId + ' .jindu').html('<div onclick="fileRetry()"><i class="iconfont" style="color: red" >&#xe6b9;</i> 上传中断</div> ');
        return;
    }
    angularObj.msg.error("上传失败",file.name);
    angularObj.list.forEach(function (item, ind) {
        if (item.upId == file.upId) {
            item.status = 3; // 上传失败
        }
    });
    updataFile(file, 3);
    try {
        angularObj.apply();
    } catch (e) {
    }
    uploader.removeFile(file, true);
    $('#' + file.upId + ' .jindu').html('<i class="iconfont" style="color: red">&#xe6b9;</i> 上传失败 ' + reason);
    //$('#' + file.id).find('p.state').text('上传出错');

});
// 上传完成
uploader.on('uploadComplete', function (file) {
    console.log('uploadComplete wancheng', file);
    // 隐藏进度条
    fadeOutProgress(file);
    //uploader.removeFile(file.id, true);
    //$successUpFileNum.html(parseInt($successUpFileNum.html()) + 1);
    // 计算进度
    //allProgress();
    //$('#' + file.id + ' .jindu').html('<i class="iconfont" style="color: #39f">&#xe781;</i> 正在转化');
    // fadeOutProgress(file, 'FILE');
});
// 文件上传 手动点击上传
$btn.on('click', function () {
    console.log("上传...");
    uploader.upload();
    console.log("上传成功");
});


/**
重试上传
@file 出错文件
*/
function fileRetry() {
    uploader.retry();
}

/**
*  生成进度条封装方法
* @param file 文件
* @param percentage 进度值
* @param titleName 标题名
*/
function getProgressBar(file, percentage, titleName) {
    var $li = $('#' + file.upId); // 当前文件
    var $td = $('#'+ file.upId +' .jindu');
    var $childProgress = $td.find('#' + file.upId + '-progress-bar');   //进度条
    var $childProgressText = $td.find('#' + file.upId + 'progress-text'); // 进度内容
    // 避免重复创建 进度条
    if (!$childProgress.length) {
        $td.html("");
        $childProgress = $('<div id="' + file.upId + '-progress"><span id="' + file.upId + 'progress-text">0%</span><br /><span class="progress"><span style="width: 0%" class="progress-bar" id="' + file.upId  + '-progress-bar"></span></span></div>').appendTo($td).find('#' + file.upId + '-progress-bar');
    }
    // 进度计算
    var progressPercentage = (percentage * 100).toFixed(2) + '%'; 
    // 修改进度条的样式
    $childProgress.css('width', progressPercentage);
    // 填充进度条的文字
    $childProgressText.html(titleName + ":" + parseInt(percentage * 100));
}


/**
* 隐藏进度条
* @param file 文件对象
*/
function fadeOutProgress(file, id_Prefix) {
    $('#' + file.upId + '-progress').fadeOut();
}
/**
   隐藏删除按钮
*/
function hideDelBtn(file) {
    var $tr = $('#' + file.upId);
    var $td = $tr.find(".delete");
    $td.hide(); // 隐藏
}
/**
    查找第一上传后的文件对象
    @file
*/
function getOneFileObj(file ) {
    var obj = null;
    countUpFile.forEach(function (item, ind) {
        if (item.upId == file.upId) {
            obj = item;
        }
    });
    return obj;
}
/**
    生成html
*/
function addFileHtml(item) {
    var statusHtml = "等待上传";
    switch (parseInt(item.status)) {
        case 5:
        statusHtml = '等待入队';
        break;
        case 4: //等待上传
        statusHtml = '等待上传';
        break;
        case 3: //失败
        statusHtml = '<div title=\"请您重新上传此文件\"><i class="iconfont" style="color: red" >&#xe6b9;</i> 上传失败</div>';
        break;
        case 2: //正在进行中 
        statusHtml = '<div title=\"请您重新上传此文件\"><i class="iconfont" style="color: red" >&#xe6b9;</i> 未上传完</div>';
        break;
        case 1: // 转换失败
        statusHtml = '<div title=\"请您重新上传此文件\"><i class="iconfont" style="color: red" >&#xe6b9;</i> 转码失败</div>';
        break;
        case 0: //成功
        statusHtml = '<i class="iconfont" style="color: green">&#xe772;</i>上传成功';
        break;

    }    
    $htmlUploadListBody.append('<tr id="' + item.upId + '">' +
    '<td style="width: 20px;">' +
        '<img src="/images/fileicon/' + item.fileType + '_56.png" onerror="javascript:this.src=\'/images/fileicon/qita_56.png\'" width="30" />' +
    '</td>' +
    '<td><div style="width:150px;overflow:hidden;text-overflow: ellipsis;" title="'+item.fileName+'">' + (item.optype == 1 ? '新增' : '更新') + item.fileName + '</div></td>' +
    '<td>' + getFileSize(item.fileSize) + '</td>' +
    '<td><a href="javascritp:void(0)">' + (item.filepath == null || item.filepath == '/' ? "根目录" : item.filepath) + '</a></td>' +
    '<td class="jindu">' + statusHtml + '</td>' + (item.fileFlag == 1 ?"":
    '<td class="delete" onclick=\'delSelectFileObj('+JSON.stringify(item)+')\'><div class="clearup" title="删除任务"><span>+</span></div></td>') +
    '</tr>');    
}
/**
  添加文件记录进度JSON.stringify(item) 
  @ file 文件对象
  @ flag 是否更新进度
*/
function addFile(file,flag){
    var isExist = false;
    // 判断文件是否存在
    countUpFile.forEach(function(item,index){
        if(item.upId == file.upId){
            isExist == true;
            return;
        }
    });
    //id 文件id name 文件名 size 文件大小 fpath 父级目录 state 文件状态 0传输完毕 1传输中 type 文件类型     
    countUpFile.push(file);
    //消息提醒
    //eventQueue("开始上传"+file.fileName);
    //angularObj.msg.info("文件" + file.fileName);
    allProgress();
}
/**
    文件更新 状态只有完成
*/
function updataFile(file, flag) {
    var index = 0;
    countUpFile.forEach(function (item, ind) {
        if (item.upId == file.upId) {
            index = ind;            
        }
    });
    countUpFile[index].status = flag; // 文件状态
    allProgress();  //更新进度
}
/**
    移除html
*/
function delFileHtml(file) {
    // 删除页面上的元素
    $("#" + file.upId).remove();
    //计算进度
    countUpFile.forEach(function (item, index) {
        if (item.upId == file.upId) {
            countUpFile.splice(index, 1);
        }
    });
    allProgress();
}
/**
队列中移除文件
@ id 文件队列id
@ upId 文件对象id
*/
function delSelectFileObj(fileobj) {
    if (fileobj.id != null && fileobj.id != "null") {   //重新上传 删除的时候这个为空值
        console.log(fileobj.id);
        // 参数二不传则为暂停上传
        try {
            uploader.removeFile(fileobj.id, true);
        } catch (e) { }
    }
    // 删除页面上的元素
    $("#" + fileobj.upId).remove();
    //计算进度
    countUpFile.forEach(function (item, index) {
        if (item.upId == fileobj.upId) {
            countUpFile.splice(index, 1);
        }
    });
    var redisparams = {};
    redisparams.upId = fileobj.upId;
    redisparams.status = fileobj.status;
    redisparams.md5 = fileobj.md5;
    if (fileobj.upUserId != undefined && fileobj.upUserId != null && fileobj.upUserId != "") {
        fileobj.userid = fileobj.upUserId;
    }
    redisparams.userid = fileobj.userid;
    redisparams.optype = fileobj.optype;
    // 清楚redis的数据
    getAjax(commonUrl + "/Kapi/delcachefiles", redisparams, function (data) {
        if (data.errorcode != "0") {
            angularObj.msg.error("删除失败");
        }
    });
    allProgress();
}
// 文件通用队列日志输出
function eventQueue(txt) {
    //uploader.getStats();
    $fileUploadInfo.html(txt);
    $fileUploadInfo.fadeIn(1000);
    $fileUploadInfo.fadeOut(2000);
}

/**
总进度计算
*/
function allProgress() {
    $successUpFileNum.html(0);  //初始化完成数
    // 总文件数
    $countUpFileNum.html(countUpFile.length);
    countUpFile.forEach(function(item,index){
        if (item.status == 0) {
            // 上传完毕文件数
            $successUpFileNum.html(parseInt($successUpFileNum.html()) + 1);
        }
    });
    if ($countUpFileNum.html() == 0) {
        $fileUploadList.hide();
    } else {
        $fileUploadList.show();
    }
    var allProgressNum = parseInt($successUpFileNum.html()) / parseInt($countUpFileNum.html());
    $('#all-progress-bar').css('width', (allProgressNum * 100).toFixed(2) + '%');
}
//====================公共方法===========================
/*
获取格式化后文件大小
*/
function getFileSize(byteSize) {
    if (byteSize != undefined) {
        if (byteSize === 0) return '0 KB';
        var k = 1024; // or 1000 
        sizes = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
        i = Math.floor(Math.log(byteSize) / Math.log(k));
        if (i > 0) {
            return (byteSize / Math.pow(k, i)).toFixed(2) + ' ' + sizes[i];
        } else {
            var num = Math.round(byteSize * 100) / 100;
            if (num <= 0) {
                return '0.01 ' + sizes[0];
            }
            return num + ' ' + sizes[0];
        }
    }        
}
/**
  请求Ajax 带返回值
   @  url 请求路径
   @ parm 请求参数
   @ callBask 回调方法
   @ callBackType 回调格式 默认： json
--------------------------------------------------*/
function getAjax(url, parm, callBack,callBackError, callBackType) {
    if(callBackType == null || callBackType == "" || callBackType == undefined)
    callBackType = "json";
    $.ajax({
        type: 'post',
        dataType: callBackType,
        url: url,
        headers: {
            "X-Session-Token":"abc"
        },
        data: parm,
        cache: false,
        async: false,
        success: function (msg) {
            callBack(msg);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            if(callBackError != undefined && callBackError != null && callBackError != "")
            callBackError(XMLHttpRequest, textStatus, errorThrown);
        }
    });
}



